package cz.vse.adventura.po1715.xkosd00_kostka;

import cz.pecinovsky.english.pojj.adv_framework.game_gui.IGameG;
import cz.pecinovsky.english.pojj.adv_framework.game_txt.IGame;
import cz.pecinovsky.english.pojj.adv_framework.scenario.AScenarioManager;
import cz.pecinovsky.english.pojj.adv_framework.scenario.ScenarioStep;
import cz.pecinovsky.english.pojj.adv_framework.scenario.TypeOfScenario;
import cz.pecinovsky.english.pojj.adv_framework.test_util._Test_101;
import cz.pecinovsky.english.pojj.adv_framework.test_util._Test_115;
import cz.vse.adventura.po1715.xkosd00_kostka.hra.Hra;

import static cz.pecinovsky.english.pojj.adv_framework.scenario.TypeOfStep.*;



/*******************************************************************************
 * Instance třída {@code SpravceScenaruL} slouží jako správce scénářů,
 * které mají prověřit a/nebo demonstrovat správnou funkci plánované hry.
 * Jednotlive scénáře jsou iterovatelné posloupností kroků specifikovaných
 * instancemi třídy <code>ScenarioStep</code> z rámce, do nějž se hra začleňuje.
 * <p>
 * Správce scénářů je jedináček, který má na starosti všechny scénáře
 * týkající se s ním sdružené hry.
 *
 * @author Dominik KOSTKA
 * @version 1.0
 */
public class SpravceScenaruL extends AScenarioManager
{
//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================

    /** Třída, jejíž instance jsou zde spravovány. */
    private final static Class<? extends IGame> TŘÍDA = Hra.class;

    /** Jmeno autora/autorky třídy. */
    private static final String autor = "KOSTKA Dominik";

    /** X-name autora/autorky třídy. */
    private static final String xname = "XKOSD00";


    /***************************************************************************
     * Konstruktor plnohodnotné instance třídy {@link ScenarioStep}
     * vyžaduje následující parametry:
     *      String   příkaz;    //Příkaz realizující tetno krok scénáře
     *      String   zpráva;    //Zpráva vypsaná po zadání příkazu
     *      String   prostor;   //Prostor, v něž skončí hráč po zadání příkazu
     *      String[] východy;   //Aktuální východy z aktuálního prostoru
     *      String[] objekty;   //Objekty vyskytující se v daném prostoru
     *      String[] batoh;     //Aktuální obsah batohu
     *      TypKroku typTestu;  //Typ daného kroku testu
     */


    /***************************************************************************
     * Základní scénář popisující možný úspěšný průběh hry.
     */
    private static final ScenarioStep[] základní =
    {
        new ScenarioStep( "", //Název prvního příkazu musí být prázdný řetězec
            "Dobrý den. Vítejte v hostelu Hostel Praha. Nacházíte se ve " +
            "vstupní hale." + "\nVaším úkolem je donést mýdlo do koupelny v " +
            "1. patře a toaletní papír do koupelny ve 2. patře." +
            "\nSousedé: Recepce, WC" +
            "\nPředměty: InformačníTabule" +
            "\nBatoh:",
            "Hala",
            new String[] {"Recepce", "WC" },
            new String[] {"InformačníTabule" },
            new String[] {},
            tsSTART ),

        new ScenarioStep( "jdi WC",
            "Přesunul(a) jste se do místnosti: WC" +
            "\nSousedé: WC" +
            "\nPředměty: Umyvadlo, Mýdlo, " +
            "ToaletníPapír, Fén, Zrcadlo" +
            "\nBatoh:",
            "WC",
            new String[] { "Hala", "Toaleta" },
            new String[] {"Umyvadlo", "Mýdlo", "ToaletníPapír",
            "Fén", "Zrcadlo" },
            new String[] {},
            tsMOVE ),

        new ScenarioStep( "vezmi mýdlo",
            "Vzal(a) jste předmět: Mýdlo" +
            "\nSousedé: Hala" +
            "\nPředměty: Umyvadlo, ToaletníPapír, " +
            "Fén, Zrcadlo" +
            "\nBatoh: Mýdlo",
            "WC",
            new String[] { "Hala", "Toaleta" },
            new String[] {"Umyvadlo", "ToaletníPapír", "Fén",
                    "Zrcadlo" },
            new String[] { "Mýdlo" },
            tsPICK_UP ),

        new ScenarioStep( "vezmi toaletnípapír",
            "Vzal(a) jste předmět: ToaletníPapír" +
            "\nSousedé: Hala" +
            "\nPředměty: Umyvadlo, Mýdlo, "
            + "ToaletníPapír, Fén, Zrcadlo" +
            "\nBatoh: Mýdlo, ToaletníPapír",
            "WC",
            new String[] { "Hala", "Toaleta" },
            new String[] {"Umyvadlo", "Fén", "Zrcadlo" },
            new String[] {"Mýdlo", "ToaletníPapír"},
            tsPICK_UP ),

        new ScenarioStep( "jdi hala",
            "Přesunul(a) jste se do místnosti: Hala" +
            "\nSousedé: Recepce, WC" +
            "\nPředměty: InformačníTabule" +
            "\nBatoh: Mýdlo, ToaletníPapír",
            "Hala",
            new String[] {"Recepce", "WC" },
            new String[] {"InformačníTabule"},
            new String[] {"Mýdlo", "ToaletníPapír"},
            tsMOVE ),

        new ScenarioStep("jdi recepce",
            "Přesunul(a) jste se do místnosti: Recepce" +
            "\nSousedé: Hala, Výtah" +
            "\nPředměty: Recepční" +
            "\nBatoh: Mýdlo, ToaletníPapír",
            "Recepce",
            new String[] {"Hala", "Výtah"},
            new String[] {"Recepční"},
            new String[] {"Mýdlo", "ToaletníPapír"},
            tsMOVE ),

        new ScenarioStep( "oslov recepční",
            "Dobrý den. Můžete se zaregistrovat." +
            "\nSousedé: Recepce" +
            "\nPředměty:" +
            "\nBatoh: Mýdlo, ToaletníPapír",
            "Recepční",
            new String[] { "Recepce" },
            new String[] {},
            new String[] {"Mýdlo", "ToaletníPapír"},
            tsNON_STANDARD ),

        new ScenarioStep( "registruj",
            "Registroval(a) jste se." +
            "\nSousedé: Recepce" +
            "\nPředměty:"+
            "\nBatoh: Mýdlo, ToaletníPapír",
            "Recepční",
            new String[] { "Recepce" },
            new String[] {},
            new String[] {"Mýdlo", "ToaletníPapír"},
            tsNON_STANDARD ),

        new ScenarioStep( "jdi recepce",
            "Přesunul(a) jste se do místnosti: Recepce" +
            "\nSousedé: Hala, Výtah" +
            "\nPředměty: Recepční" +
            "\nBatoh: Mýdlo, ToaletníPapír",
            "Recepce",
            new String[] { "Hala", "Výtah"  },
            new String[] { "Recepční" },
            new String[] {"Mýdlo", "ToaletníPapír"},
            tsMOVE ),

        new ScenarioStep( "jdi výtah",
            "Přesunul(a) jste se do místnosti: Výtah" +
            "\nSousedé: Recepce, Patro1, Patro2" +
            "\nPředměty: Zrcadlo, Židle" +
            "\nBatoh: Mýdlo, ToaletníPapír",
            "Výtah",
            new String[] { "Recepce", "Patro1", "Patro2" },
            new String[] { "Zrcadlo", "Židle" },
            new String[] {"Mýdlo", "ToaletníPapír"},
            tsMOVE ),

        new ScenarioStep( "jdi patro1",
            "Přesunul(a) jste se do místnosti: Patro1"+
            "\nSousedé: Výtah, Koupelna1, " +
            "Pokoj11, Pokoj12, Pokoj13, Pokoj14, Pokoj15" +
            "\nPředměty: Okno1, Vypínač1" +
            "\nBatoh: Mýdlo, ToaletníPapír",
            "Patro1",
            new String[] { "Výtah", "Koupelna1", "Pokoj11", "Pokoj12",
            "Pokoj13", "Pokoj14", "Pokoj15" },
            new String[] { "Okno1", "Vypínač1" },
            new String[] {"Mýdlo", "ToaletníPapír"},
            tsMOVE ),
        
        new ScenarioStep( "stiskni vypínač1",
            "Světla v místnosti Patro1 jsou zapnuta." +
            "\nSousedé: Výtah, Koupelna1, Pokoj11, " +
            "Pokoj12, Pokoj13, Pokoj14, Pokoj15" +
            "\nPředměty: Okno1, Vypínač1" +
            "\nBatoh: Mýdlo, ToaletníPapír",
            "Patro1",
            new String[] { "Výtah", "Koupelna1", "Pokoj11", "Pokoj12", "Pokoj13",
            "Pokoj14", "Pokoj15" },
            new String[] { "Okno1", "Vypínač1"},
            new String[] {"Mýdlo", "ToaletníPapír"},
            tsNON_STANDARD ),

        new ScenarioStep( "jdi koupelna1",
            "Přesunul(a) jste se do místnosti: Koupelna1" +
            "\nSousedé: Patro1" +
            "\nPředměty: Sprcha, Umyvadlo, Mýdlo, Fén, Zrcadlo, Záchod" +
            "\nBatoh: Mýdlo, ToaletníPapír",
            "Koupelna1",
            new String[] { "Patro1" },
            new String[] { "Sprcha", "Umyvadlo", "Mýdlo", "Fén", "Zrcadlo",
            "Záchod"},
            new String[] {"Mýdlo", "ToaletníPapír"},
            tsMOVE ),

        new ScenarioStep( "polož toaletnípapír",
            "Položil(a) jste předmět: ToaletníPapír" +
            "\nSousedé: Patro1" +
            "\nPředměty: Sprcha, Umyvadlo, Mýdlo, Fén, Zrcadlo, Záchod, " +
            "ToaletníPapír" +
            "\nBatoh: Mýdlo",
            "Koupelna1",
            new String[] { "Patro1" },
            new String[] { "Sprcha", "Umyvadlo", "Mýdlo", "Fén", "Zrcadlo",
            "Záchod", "ToaletníPapír"},
            new String[] {"Mýdlo"},
            tsPUT_DOWN ),

            new ScenarioStep( "jdi patro1",
            "Přesunul(a) jste se do místnosti: Patro1"+
            "\nSousedé: Výtah, Koupelna1, " +
            "Pokoj11, Pokoj12, Pokoj13, Pokoj14, Pokoj15" +
            "\nPředměty: Okno1, Vypínač1" +
            "\nBatoh: Mýdlo",
            "Patro1",
            new String[] { "Výtah", "Koupelna1", "Pokoj11", "Pokoj12",
            "Pokoj13", "Pokoj14", "Pokoj15" },
            new String[] { "Okno1", "Vypínač1" },
            new String[] {"Mýdlo"},
            tsMOVE ),

            new ScenarioStep( "jdi výtah",
            "Přesunul(a) jste se do místnosti: Výtah" +
            "\nSousedé: Recepce, Patro1, Patro2" +
            "\nPředměty: Zrcadlo, Židle" +
            "\nBatoh: Mýdlo",
            "Výtah",
            new String[] { "Recepce", "Patro1", "Patro2" },
            new String[] { "Zrcadlo", "Židle" },
            new String[] {"Mýdlo"},
            tsMOVE ),

            new ScenarioStep( "koukni zrcadlo",
            "Koukl(a) jste se do zrcadla." +
            "\nSousedé: Recepce, Patro1, Patro2" +
            "\nPředměty: Zrcadlo, Židle" +
            "\nBatoh: Mýdlo",
            "Výtah",
            new String[] { "Recepce", "Patro1", "Patro2" },
            new String[] { "Zrcadlo", "Židle" },
            new String[] {"Mýdlo"},
            tsNON_STANDARD ),

            new ScenarioStep( "sedni židle",
            "Sednul(a) jste si na židli."+
            "\nSousedé:" +
            "\nPředměty:" +
            "\nBatoh: Mýdlo",
            "Židle",
            new String[] {},
            new String[] {},
            new String[] {"Mýdlo"},
            tsNON_STANDARD ),

            new ScenarioStep( "vstaň židle",
            "Vstal(a) jste ze židle." +
            "\nSousedé: Recepce, Patro1, Patro2" +
            "\nPředměty: Zrcadlo, Židle" +
            "\nBatoh: Mýdlo",
            "Výtah",
            new String[] {"Recepce", "Patro1", "Patro2" },
            new String[] { "Zrcadlo", "Židle"},
            new String[] {"Mýdlo"},
            tsNON_STANDARD ),

            new ScenarioStep( "jdi patro2",
            "Přesunul(a) jste se do místnosti: Patro2"+
            "\nSousedé: Výtah, Koupelna2, " +
            "Pokoj21, Pokoj22, Pokoj23, Pokoj24, Pokoj25" +
            "\nPředměty: Okno2, Vypínač2" +
            "\nBatoh: Mýdlo",
            "Patro2",
            new String[] { "Výtah", "Koupelna2", "Pokoj21", "Pokoj22",
            "Pokoj23", "Pokoj24", "Pokoj25" },
            new String[] { "Okno2", "Vypínač2" },
            new String[] {"Mýdlo"},
            tsMOVE ),

            new ScenarioStep( "stiskni vypínač2",
            "Světla v místnosti Patro2 jsou zapnuta." +
            "\nSousedé: Výtah, Koupelna2, Pokoj21, " +
            "Pokoj22, Pokoj23, Pokoj24, Pokoj25" +
            "\nPředměty: Okno2, Vypínač2" +
            "\nBatoh: Mýdlo",
            "Patro2",
            new String[] { "Výtah", "Koupelna2", "Pokoj21", "Pokoj22", "Pokoj23",
            "Pokoj24", "Pokoj25" },
            new String[] { "Okno2", "Vypínač2"},
            new String[] {"Mýdlo"},
            tsNON_STANDARD ),

            new ScenarioStep( "jdi koupelna2",
            "Přesunul(a) jste se do místnosti: Koupelna2" +
            "\nSousedé: Patro2" +
            "\nPředměty: Sprcha, Umyvadlo, ToaletníPapír, Fén, Zrcadlo, Záchod" +
            "\nBatoh: Mýdlo",
            "Koupelna2",
            new String[] { "Patro2" },
            new String[] { "Sprcha", "Umyvadlo", "ToaletníPapír", "Fén",
            "Zrcadlo", "Záchod"},
            new String[] {"Mýdlo"},
            tsMOVE ),

            new ScenarioStep("polož mýdlo",
            "Hurá! Výhral(a) jste hru. Hra skončila." +
            "\nSousedé: Patro2" +
            "\nPředměty: Sprcha, Umyvadlo, Fén, Zrcadlo, Záchod, " +
            "ToaletníPapír, Mýdlo" +
            "\nBatoh:",
            "Koupelna2",
            new String[] { "Patro2" },
            new String[] { "Sprcha", "Umyvadlo", "Fén",
            "Zrcadlo", "Záchod", "ToaletníPapír", "Mýdlo" },
            new String[] {},
            tsPUT_DOWN ),

//            new ScenarioStep( "tsEND",
//            "tsEND hry. \nDěkujeme, že jste zkusil(a) naši hru." +
//            "\nSousedé: Patro2" +
//            "\nPředměty: Sprcha, Umyvadlo, Fén, Zrcadlo, Záchod, " +
//            "ToaletníPapír, Mýdlo" +
//            "\nBatoh:",
//            "Koupelna2",
//            new String[] { "Patro2" },
//            new String[] { "Sprcha", "Umyvadlo", "Mýdlo", "Fén", "Zrcadlo",
//            "Záchod", "ToaletníPapír"},
//            new String[] {},
//            tsEND ),

            

            

        //V úspěsném scénáři nemusí být typ posledního příkazu tsEND
        //Hra může končit i prostým dosažením požadovaného cíle
    };


    /***************************************************************************
     * Základní chybový scénář definující reakce
     * na povinnou sadu chybových stavů.
     */
    private static final ScenarioStep[] chybový =
    {
        new ScenarioStep( "", //Název prvního příkazu musí být prázdný řetězec
            "Dobrý den. Vítejte v hostelu Hostel Praha. Nacházíte se ve " +
            "vstupní hale." + "\nVaším úkolem je donést toaletní papír" +
            " do koupelny v 1. patře a mýdlo do koupelny ve 2. patře." +
            "\nSousedé: Recepce, WC" +
            "\nPředměty: InformačníTabule" +
            "\nBatoh:",
            "Hala",
            new String[] {"Recepce", "WC" },
            new String[] {"InformačníTabule" },
            new String[] {},
            tsSTART ),

        new ScenarioStep( "",
            "Zadal(a) jste prázdný příkaz." +
            "\nSousedé: Recepce, WC" +
            "\nPředměty: InformačníTabule" +
            "\nBatoh:",
            "Hala",
            new String[] {"Recepce", "WC" },
            new String[] {"InformačníTabule" },
            new String[] {},
            tsEMPTY ),

        new ScenarioStep( "přečti informačnítabule",
            "Tento příkaz neznám." +
            "\nChcete-li poradit, zadejte příkaz ?" +
            "\nSousedé: Recepce, WC" +
            "\nPředměty: InformačníTabule" +
            "\nBatoh:",
            "Hala",
            new String[] {"Recepce", "WC" },
            new String[] {"InformačníTabule" },
            new String[] {},
            tsUNKNOWN ),

        new ScenarioStep( "jdi výtah",
            "Do zadané místnosti se odsud nedá přejít." +
            "\nSousedé: Recepce, WC" +
            "\nPředměty: InformačníTabule" +
            "\nBatoh:",
            "Hala",
            new String[] {"Recepce", "WC" },
            new String[] {"InformačníTabule" },
            new String[] {},
            tsBAD_NEIGHBOR ),

        new ScenarioStep( "jdi wc",
            "Přesunul(a) jste se do místnosti: WC" +
            "\nSousedé: Hala, Toaleta" +
            "\nPředměty: Umyvadlo, Mýdlo, " +
            "ToaletníPapír, Fén, Zrcadlo" +
            "\nBatoh:",
            "WC",
            new String[] { "Hala", "Toaleta" },
            new String[] {"Umyvadlo", "Mýdlo", "ToaletníPapír",
            "Fén", "Zrcadlo" },
            new String[] {},
            tsMOVE ),

        new ScenarioStep( "vezmi mýdlo",
            "Vzal(a) jste předmět: Mýdlo" +
            "\nSousedé: Hala, Toaleta" +
            "\nPředměty: Umyvadlo, ToaletníPapír, " +
            "Fén, Zrcadlo" +
            "nBatoh: Mýdlo",
            "WC",
            new String[] { "Hala", "Toaleta" },
            new String[] {"Umyvadlo", "ToaletníPapír", "Fén",
            "Zrcadlo" },
            new String[] { "Mýdlo" },
            tsPICK_UP ),

        new ScenarioStep( "vezmi fén",
            "Vzal(a) jste předmět: Fén" +
            "\nSousedé: Hala, Toaleta" +
            "\nPředměty: Umyvadlo, ToaletníPapír, Zrcadlo" +
            "nBatoh: Mýdlo, Fén",
            "WC",
            new String[] { "Hala", "Toaleta" },
            new String[] {"Umyvadlo", "ToaletníPapír", "Zrcadlo" },
            new String[] { "Mýdlo", "Fén" },
            tsPICK_UP ),

        new ScenarioStep( "vezmi toaletnípapír",
            "Zadaný předmět nemůžete vzít, máte už obě ruce plné." +
            "\nSousedé: Hala" +
            "\nPředměty: Umyvadlo, ToaletníPapír, Zrcadlo" +
            "nBatoh: Mýdlo, Fén",
            "WC",
            new String[] { "Hala", "Toaleta" },
            new String[] {"Umyvadlo", "ToaletníPapír", "Zrcadlo" },
            new String[] { "Mýdlo", "Fén" },
            tsBAG_FULL ),

        new ScenarioStep( "jdi hala",
            "Přesunul(a) jste se do místnosti: Hala" +
            "\nSousedé: Recepce, WC" +
            "\nPředměty: InformačníTabule" +
            "nBatoh: Mýdlo, Fén",
            "Hala",
            new String[] {"Recepce", "WC" },
            new String[] {"InformačníTabule" },
            new String[] {"Mýdlo", "Fén"},
            tsMOVE ),

        new ScenarioStep( "vezmi informačnítabule",
            "Zadaný předmět nelze zvednout: InformačníTabule" +
            "\nSousedé: Recepce, WC" +
            "\nPředměty: InformačníTabule" +
            "\nBatoh: Mýdlo, Fén",
            "Hala",
            new String[] {"Recepce", "WC" },
            new String[] {"InformačníTabule" },
            new String[] {"Mýdlo", "Fén"},
            tsUNMOVABLE ),

        new ScenarioStep( "vezmi noviny",
            "Zadaný předmět v místnosti není: Noviny" +
            "\nSousedé: Recepce, WC" +
            "\nPředměty: InformačníTabule" +
            "\nBatoh: Mýdlo, Fén",
            "Hala",
            new String[] {"Recepce", "WC" },
            new String[] {"InformačníTabule" },
            new String[] {"Mýdlo", "Fén"},
            tsBAD_OBJECT ),

        new ScenarioStep( "polož noviny",
            "Předmět není v batohu: Noviny" +
            "\nSousedé: Recepce, WC" +
            "\nPředměty: InformačníTabule" +
            "\nBatoh: Mýdlo, Fén",
            "Hala",
            new String[] {"Recepce", "WC" },
            new String[] {"InformačníTabule" },
            new String[] {"Mýdlo", "Fén"},
            tsNOT_IN_BAG ),

        new ScenarioStep("?",
            "\nPříkazy, které je možno v průběhu hry zadat:" +
            "\n============================================"+
            "\nSousedé: Recepce, WC" +
            "\nPředměty: InformačníTabule" +
            "\nBatoh: Mýdlo, Fén",
            "Hala",
            new String[] {"Recepce", "WC" },
            new String[] {"InformačníTabule" },
            new String[] {"Mýdlo", "Fén"},
            tsHELP ),

        new ScenarioStep( "konec",
            "Konec hry. \nDěkujeme, že jste zkusil(a) naši hru."+
            "\nSousedé: Recepce, WC" +
            "\nPředměty: InformačníTabule" +
            "\nBatoh: Mýdlo, Fén",
            "Hala",
            new String[] { "Recepce", "WC"},
            new String[] { "InformačníTabule" },
            new String[] {"Mýdlo", "Fén"},
            tsEND )
    };

    /***************************************************************************
     * Příkazy pro demonstrační scénář sloužící k analýze funkce
     * grafického uživatelského rozhraní.
     * Scénář má za úkol projít jeméně třemi místnostmi,
     * zvednout nejméně dva objekty a položit je v jiné místnosti,
     * než ve které je zvedal.
     * Příkazy pro demonstrační scénář neobsahuje úvodní prázdný příkaz,
     * ten si konstruktor scénáře doplní sám.
     */
    String[] demonstrační = {
             "jdi   wc",
             "vezmi mýdlo",
             "vezmi toaletnípapír",
             "jdi   hala",
             "jdi   recepce",
             "polož mýdlo",
             "polož toaletnípapír",
             "konec"
    };



    /** Jediná instance této třídy. Spravuje všechny scénáře sdružené hry. */
    private static final SpravceScenaruL SS = new SpravceScenaruL();
    


//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== STATICKÝ INICIALIZAČNÍ BLOK - STATICKÝ KONSTRUKTOR ========================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================
//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ NESOUKROMÉ METODY TŘÍDY ===========================================

//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /***************************************************************************
     * Vrátí správce scénářů - jedinou instanci této třídy.
     *
     * @return Správce scénářů
     */
    public static SpravceScenaruL getInstance()
    {
        return SS;
    }


    /***************************************************************************
     * Vytvoří instanci představující správce scénářů hry.
     */
    private SpravceScenaruL()
    {
        super(autor, xname, TŘÍDA);

        addScenario("Základní", TypeOfScenario.scHAPPY, základní);
        addScenario("Chybový",  TypeOfScenario.scMISTAKES, chybový);
        addScenario("Demo for GUI", demonstrační);
        seal();
    }

    /***************************************************************************
     * Základní test ověřující, jestli správce scénářů vyhovuje
     * zadným okrajovým podmínkám.
     */
    public static void testSprávceScénářů()
    {
        _Test_101 test = _Test_101.getInstance(SS);
        test.testScenarioManager();
    }


    /***************************************************************************
     * Testování funkce hry prováděné postupně
     * prostřednictvím všech scénářů daného správce
     */
    public static void prověrkaHry()
    {
        IGame     hra  = SS.getGame();
        _Test_101 test = _Test_101.getInstance(hra);
        test.testGame();
    }


    /***************************************************************************
     * Test ověřujícífunkci textové verze hry.
     */
    public static void testTXT()
    {
        IGame     hra  = SS.getGame();
        _Test_101 test = _Test_101.getInstance(hra);
        test.playGameByScenario(INDEX_GUI_TEST);
    }


    /***************************************************************************
     * Test demonstrující hraní hry na daném GUI.
     */
    public static void testGUI()
    {
        IGameG    hra  = (IGameG)SS.getGame();
        _Test_115 test = _Test_115.getInstance(hra);
        test.playGameByScenario(INDEX_GUI_TEST);
    }


    /** @param args Parametry příkazového řádku - nepoužívané. */
    public static void main( String[] args )
    {
        testTXT();
    }
}
